<!--
  - Tencent is pleased to support the open source community by making BK-ITSM 蓝鲸流程服务 available.
  - Copyright (C) 2021 THL A29 Limited, a Tencent company.  All rights reserved.
  - BK-ITSM 蓝鲸流程服务 is licensed under the MIT License.
  -
  - License for BK-ITSM 蓝鲸流程服务:
  - -------------------------------------------------------------------
  -
  - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
  - documentation files (the "Software"), to deal in the Software without restriction, including without limitation
  - the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
  - and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
  - The above copyright notice and this permission notice shall be included in all copies or substantial
  - portions of the Software.
  -
  - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  - LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
  -->

<template>
    <div class="render-view" style="margin-left: 10px;">
        <div
            v-for="(form, index) in formData"
            :key="index + new Date()"
            class="view-item-wrap">
            <ViewItem
                :top-index="index"
                :is-top="true"
                :scheme="getScheme(form)"
                :form="form">
            </ViewItem>
        </div>
    </div>
</template>
<script>
    import ViewItem from './ViewItem'
    
    export default {
        name: 'RenderView',
        components: {
            ViewItem
        },
        props: {
            formData: {
                type: Array,
                default: () => ([])
            },
            context: {
                type: Object,
                default: () => ({})
            }
        },
        provide () {
            return {
                getContext: () => this.context
            }
        },
        data () {
            return {
                isRootRenderView: null,
                value: {}
            }
        },
        created () {
            this.initRenderView()
        },
        methods: {
            getScheme (form) {
                if (this.context.schemes[form.scheme]) {
                    return this.context.schemes[form.scheme]
                }
                return {}
            },
            initRenderView () {
                let vueTag = this
                let findParent = false
                while (!findParent && vueTag.$parent) {
                    if (vueTag.$parent.$options._componentTag === 'render-view') {
                        findParent = true
                    } else {
                        vueTag = vueTag.$parent
                    }
                }
                this.isRootRenderView = !findParent
            }
        }
    }
</script>

<style lang="scss" scoped>
</style>
